A service-oriented architecture is a software design paradigm in which application components provide services to other application components through a communication protocol. By using an abstraction similar to that of object oriented programming, services can be deployed on multiple computing devices and in multiple locations, which allows for scaling and flexibility. Microservices are a particular approach to service-oriented architecture with a small granularity. Under a microservices approach, a single request for a web page might be handled by dozens of different services that are each specialized to perform a specific task.